#ifndef CKEYIDENTIFICATIONS_H_
#define CKEYIDENTIFICATIONS_H_

#include "../base/cobject.h"

/**
 * CKeyIdentifications - class which defines key ids (compatible with SDL)
 * @author Michal Rost
 * @date 08.04.2008
 */
class CKeyIdentifications : public CObject {
public:
  static const unsigned short int KEY_UNKNOWN = 0;
  static const unsigned short int KEY_FIRST = 0;
  static const unsigned short int KEY_BACKSPACE = 8;
  static const unsigned short int KEY_TAB = 9;
  static const unsigned short int KEY_CLEAR = 12;
  static const unsigned short int KEY_RETURN = 13;
  static const unsigned short int KEY_PAUSE = 19;
  static const unsigned short int KEY_ESCAPE = 27;
  static const unsigned short int KEY_SPACE = 32;
  static const unsigned short int KEY_EXCLAIM = 33;
  static const unsigned short int KEY_QUOTEDBL = 34;
  static const unsigned short int KEY_HASH = 35;
  static const unsigned short int KEY_DOLLAR = 36;
  static const unsigned short int KEY_AMPERSAND = 38;
  static const unsigned short int KEY_QUOTE = 39;
  static const unsigned short int KEY_LEFTPAREN = 40;
  static const unsigned short int KEY_RIGHTPAREN = 41;
  static const unsigned short int KEY_ASTERISK = 42;
  static const unsigned short int KEY_PLUS = 43;
  static const unsigned short int KEY_COMMA = 44;
  static const unsigned short int KEY_MINUS = 45;
  static const unsigned short int KEY_PERIOD = 46;
  static const unsigned short int KEY_SLASH = 47;
  static const unsigned short int KEY_0 = 48;
  static const unsigned short int KEY_1 = 49;
  static const unsigned short int KEY_2 = 50;
  static const unsigned short int KEY_3 = 51;
  static const unsigned short int KEY_4 = 52;
  static const unsigned short int KEY_5 = 53;
  static const unsigned short int KEY_6 = 54;
  static const unsigned short int KEY_7 = 55;
  static const unsigned short int KEY_8 = 56;
  static const unsigned short int KEY_9 = 57;
  static const unsigned short int KEY_COLON = 58;
  static const unsigned short int KEY_SEMICOLON = 59;
  static const unsigned short int KEY_LESS = 60;
  static const unsigned short int KEY_EQUALS = 61;
  static const unsigned short int KEY_GREATER = 62;
  static const unsigned short int KEY_QUESTION = 63;
  static const unsigned short int KEY_AT = 64;
  static const unsigned short int KEY_LEFTBRACKET = 91;
  static const unsigned short int KEY_BACKSLASH = 92;
  static const unsigned short int KEY_RIGHTBRACKET = 93;
  static const unsigned short int KEY_CARET = 94;
  static const unsigned short int KEY_UNDERSCORE = 95;
  static const unsigned short int KEY_BACKQUOTE = 96;
  static const unsigned short int KEY_a = 97;
  static const unsigned short int KEY_b = 98;
  static const unsigned short int KEY_c = 99;
  static const unsigned short int KEY_d = 100;
  static const unsigned short int KEY_e = 101;
  static const unsigned short int KEY_f = 102;
  static const unsigned short int KEY_g = 103;
  static const unsigned short int KEY_h = 104;
  static const unsigned short int KEY_i = 105;
  static const unsigned short int KEY_j = 106;
  static const unsigned short int KEY_k = 107;
  static const unsigned short int KEY_l = 108;
  static const unsigned short int KEY_m = 109;
  static const unsigned short int KEY_n = 110;
  static const unsigned short int KEY_o = 111;
  static const unsigned short int KEY_p = 112;
  static const unsigned short int KEY_q = 113;
  static const unsigned short int KEY_r = 114;
  static const unsigned short int KEY_s = 115;
  static const unsigned short int KEY_t = 116;
  static const unsigned short int KEY_u = 117;
  static const unsigned short int KEY_v = 118;
  static const unsigned short int KEY_w = 119;
  static const unsigned short int KEY_x = 120;
  static const unsigned short int KEY_y = 121;
  static const unsigned short int KEY_z = 122;
  static const unsigned short int KEY_DELETE = 127;
  static const unsigned short int KEY_WORLD_0 = 160;
  static const unsigned short int KEY_WORLD_1 = 161;
  static const unsigned short int KEY_WORLD_2 = 162;
  static const unsigned short int KEY_WORLD_3 = 163;
  static const unsigned short int KEY_WORLD_4 = 164;
  static const unsigned short int KEY_WORLD_5 = 165;
  static const unsigned short int KEY_WORLD_6 = 166;
  static const unsigned short int KEY_WORLD_7 = 167;
  static const unsigned short int KEY_WORLD_8 = 168;
  static const unsigned short int KEY_WORLD_9 = 169;
  static const unsigned short int KEY_WORLD_10 = 170;
  static const unsigned short int KEY_WORLD_11 = 171;
  static const unsigned short int KEY_WORLD_12 = 172;
  static const unsigned short int KEY_WORLD_13 = 173;
  static const unsigned short int KEY_WORLD_14 = 174;
  static const unsigned short int KEY_WORLD_15 = 175;
  static const unsigned short int KEY_WORLD_16 = 176;
  static const unsigned short int KEY_WORLD_17 = 177;
  static const unsigned short int KEY_WORLD_18 = 178;
  static const unsigned short int KEY_WORLD_19 = 179;
  static const unsigned short int KEY_WORLD_20 = 180;
  static const unsigned short int KEY_WORLD_21 = 181;
  static const unsigned short int KEY_WORLD_22 = 182;
  static const unsigned short int KEY_WORLD_23 = 183;
  static const unsigned short int KEY_WORLD_24 = 184;
  static const unsigned short int KEY_WORLD_25 = 185;
  static const unsigned short int KEY_WORLD_26 = 186;
  static const unsigned short int KEY_WORLD_27 = 187;
  static const unsigned short int KEY_WORLD_28 = 188;
  static const unsigned short int KEY_WORLD_29 = 189;
  static const unsigned short int KEY_WORLD_30 = 190;
  static const unsigned short int KEY_WORLD_31 = 191;
  static const unsigned short int KEY_WORLD_32 = 192;
  static const unsigned short int KEY_WORLD_33 = 193;
  static const unsigned short int KEY_WORLD_34 = 194;
  static const unsigned short int KEY_WORLD_35 = 195;
  static const unsigned short int KEY_WORLD_36 = 196;
  static const unsigned short int KEY_WORLD_37 = 197;
  static const unsigned short int KEY_WORLD_38 = 198;
  static const unsigned short int KEY_WORLD_39 = 199;
  static const unsigned short int KEY_WORLD_40 = 200;
  static const unsigned short int KEY_WORLD_41 = 201;
  static const unsigned short int KEY_WORLD_42 = 202;
  static const unsigned short int KEY_WORLD_43 = 203;
  static const unsigned short int KEY_WORLD_44 = 204;
  static const unsigned short int KEY_WORLD_45 = 205;
  static const unsigned short int KEY_WORLD_46 = 206;
  static const unsigned short int KEY_WORLD_47 = 207;
  static const unsigned short int KEY_WORLD_48 = 208;
  static const unsigned short int KEY_WORLD_49 = 209;
  static const unsigned short int KEY_WORLD_50 = 210;
  static const unsigned short int KEY_WORLD_51 = 211;
  static const unsigned short int KEY_WORLD_52 = 212;
  static const unsigned short int KEY_WORLD_53 = 213;
  static const unsigned short int KEY_WORLD_54 = 214;
  static const unsigned short int KEY_WORLD_55 = 215;
  static const unsigned short int KEY_WORLD_56 = 216;
  static const unsigned short int KEY_WORLD_57 = 217;
  static const unsigned short int KEY_WORLD_58 = 218;
  static const unsigned short int KEY_WORLD_59 = 219;
  static const unsigned short int KEY_WORLD_60 = 220;
  static const unsigned short int KEY_WORLD_61 = 221;
  static const unsigned short int KEY_WORLD_62 = 222;
  static const unsigned short int KEY_WORLD_63 = 223;
  static const unsigned short int KEY_WORLD_64 = 224;
  static const unsigned short int KEY_WORLD_65 = 225;
  static const unsigned short int KEY_WORLD_66 = 226;
  static const unsigned short int KEY_WORLD_67 = 227;
  static const unsigned short int KEY_WORLD_68 = 228;
  static const unsigned short int KEY_WORLD_69 = 229;
  static const unsigned short int KEY_WORLD_70 = 230;
  static const unsigned short int KEY_WORLD_71 = 231;
  static const unsigned short int KEY_WORLD_72 = 232;
  static const unsigned short int KEY_WORLD_73 = 233;
  static const unsigned short int KEY_WORLD_74 = 234;
  static const unsigned short int KEY_WORLD_75 = 235;
  static const unsigned short int KEY_WORLD_76 = 236;
  static const unsigned short int KEY_WORLD_77 = 237;
  static const unsigned short int KEY_WORLD_78 = 238;
  static const unsigned short int KEY_WORLD_79 = 239;
  static const unsigned short int KEY_WORLD_80 = 240;
  static const unsigned short int KEY_WORLD_81 = 241;
  static const unsigned short int KEY_WORLD_82 = 242;
  static const unsigned short int KEY_WORLD_83 = 243;
  static const unsigned short int KEY_WORLD_84 = 244;
  static const unsigned short int KEY_WORLD_85 = 245;
  static const unsigned short int KEY_WORLD_86 = 246;
  static const unsigned short int KEY_WORLD_87 = 247;
  static const unsigned short int KEY_WORLD_88 = 248;
  static const unsigned short int KEY_WORLD_89 = 249;
  static const unsigned short int KEY_WORLD_90 = 250;
  static const unsigned short int KEY_WORLD_91 = 251;
  static const unsigned short int KEY_WORLD_92 = 252;
  static const unsigned short int KEY_WORLD_93 = 253;
  static const unsigned short int KEY_WORLD_94 = 254;
  static const unsigned short int KEY_WORLD_95 = 255; 

  // Numeric keyboard
  static const unsigned short int KEY_KP0 = 256;
  static const unsigned short int KEY_KP1 = 257;
  static const unsigned short int KEY_KP2 = 258;
  static const unsigned short int KEY_KP3 = 259;
  static const unsigned short int KEY_KP4 = 260;
  static const unsigned short int KEY_KP5 = 261;
  static const unsigned short int KEY_KP6 = 262;
  static const unsigned short int KEY_KP7 = 263;
  static const unsigned short int KEY_KP8 = 264;
  static const unsigned short int KEY_KP9 = 265;
  static const unsigned short int KEY_KP_PERIOD = 266;
  static const unsigned short int KEY_KP_DIVIDE = 267;
  static const unsigned short int KEY_KP_MULTIPLY = 268;
  static const unsigned short int KEY_KP_MINUS = 269;
  static const unsigned short int KEY_KP_PLUS = 270;
  static const unsigned short int KEY_KP_ENTER = 271;
  static const unsigned short int KEY_KP_EQUALS = 272;

  // Arrows + Home/End
  static const unsigned short int KEY_UP = 273;
  static const unsigned short int KEY_DOWN = 274;
  static const unsigned short int KEY_RIGHT = 275;
  static const unsigned short int KEY_LEFT = 276;
  static const unsigned short int KEY_INSERT = 277;
  static const unsigned short int KEY_HOME = 278;
  static const unsigned short int KEY_END = 279;
  static const unsigned short int KEY_PAGEUP = 280;
  static const unsigned short int KEY_PAGEDOWN = 281;

  // Function keys
  static const unsigned short int KEY_F1 = 282;
  static const unsigned short int KEY_F2 = 283;
  static const unsigned short int KEY_F3 = 284;
  static const unsigned short int KEY_F4 = 285;
  static const unsigned short int KEY_F5 = 286;
  static const unsigned short int KEY_F6 = 287;
  static const unsigned short int KEY_F7 = 288;
  static const unsigned short int KEY_F8 = 289;
  static const unsigned short int KEY_F9 = 290;
  static const unsigned short int KEY_F10 = 291;
  static const unsigned short int KEY_F11 = 292;
  static const unsigned short int KEY_F12 = 293;
  static const unsigned short int KEY_F13 = 294;
  static const unsigned short int KEY_F14 = 295;
  static const unsigned short int KEY_F15 = 296;

  // Special keys
  static const unsigned short int KEY_NUMLOCK = 300;
  static const unsigned short int KEY_CAPSLOCK = 301;
  static const unsigned short int KEY_SCROLLOCK = 302;
  static const unsigned short int KEY_RSHIFT = 303;
  static const unsigned short int KEY_LSHIFT = 304;
  static const unsigned short int KEY_RCTRL = 305;
  static const unsigned short int KEY_LCTRL = 306;
  static const unsigned short int KEY_RALT = 307;
  static const unsigned short int KEY_LALT = 308;
  static const unsigned short int KEY_RMETA = 309;
  static const unsigned short int KEY_LMETA = 310;
  static const unsigned short int KEY_LSUPER = 311;
  static const unsigned short int KEY_RSUPER = 312; 
  static const unsigned short int KEY_MODE = 313;
  static const unsigned short int KEY_COMPOSE = 314;

  // Other keys
  static const unsigned short int KEY_HELP = 315;
  static const unsigned short int KEY_PRINT = 316;
  static const unsigned short int KEY_SYSREQ = 317;
  static const unsigned short int KEY_BREAK = 318;
  static const unsigned short int KEY_MENU = 319;
  static const unsigned short int KEY_POWER = 320; 
  static const unsigned short int KEY_EURO = 321;
  static const unsigned short int KEY_UNDO = 322; 
  static string getClassName() {
    return "CKeyIdentifications";
  }
};

#endif
